/**
 * @param {Function} Father 父类
 * @param {Function} Child 子类
 * @description 
	构造函数继承是通过在子类的构造函数中调用父类的构造函数，从而实现继承
	
	优点：
	可以向父类构造函数传递参数，实现了子类实例属性的独立性。
	父类中引用类型的属性不会被所有子类实例共享。
	
	缺点：
	无法继承父类原型中的属性和方法，导致每个子类实例都会有一份相同的方法副本，浪费内存。
	无法使用 instanceof 判断子类实例的类型，因为子类实例的原型对象不是父类的原型对象。
 */
function Father(type) {
	this.type = type
}
Father.prototype.say = function() {
	console.log('I am father');
}

function Child(type) {
	Father.call(this, type) //在子类的构造函数中调用父类的构造函数
}
let child = new Child('son')
console.log(child.type); //son
child.say() //TypeError: child.say is not a function